
package com.jf.cloud.api.order.feign;

import com.jf.cloud.api.order.dto.QueryOrderDTO;
import com.jf.cloud.common.order.bo.EsOrderBO;
import com.jf.cloud.common.order.bo.OrderStatusBO;
import com.jf.cloud.api.order.bo.UserScoreLogOrderBO;
import com.jf.cloud.api.order.dto.CustomerRetainedDTO;
import com.jf.cloud.api.order.dto.FormExcelDTO;
import com.jf.cloud.api.order.vo.*;
import com.jf.cloud.api.user.bo.UserOrderStatisticBO;
import com.jf.cloud.api.user.bo.UserOrderStatisticListBO;
import com.jf.cloud.api.user.dto.MemberReqDTO;
import com.jf.cloud.api.user.vo.UserManagerVO;
import com.jf.cloud.common.database.dto.PageDTO;
import com.jf.cloud.common.feign.FeignInsideAuthConfig;
import com.jf.cloud.common.order.dto.OrderDTO;
import com.jf.cloud.common.order.dto.OrderSearchDTO;
import com.jf.cloud.common.order.dto.OrderVirtualInfoDTO;
import com.jf.cloud.common.order.vo.*;
import com.jf.cloud.common.response.ServerResponseEntity;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Collection;
import java.util.Date;
import java.util.List;

/**
 * @author zz
 * @date 2020/11/23
 */
@FeignClient(value = "jfcloud-order", contextId = "order")
public interface OrderFeignClient {


    /**
     * 如果订单没有被取消的话，获取订单金额，否之会获取失败
     *
     * @param orderIds 订单id列表
     * @return 订单金额
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/ordgetOrdersAmountAndIfNoCanceler")
    ServerResponseEntity<OrderAmountVO> getOrdersAmountAndIfNoCancel(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 支付尾款判断，如果订单没有被取消的话且未支付尾款，获取订单金额，否之会获取失败
     *
     * @param orderIds 订单id列表
     * @return 订单金额
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getOrdersAmountAndCheckOrderStatus")
    ServerResponseEntity<OrderAmountVO> getOrdersAmountAndCheckOrderStatus(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 获取订单状态，如果订单状态不存在，则说明订单没有创建
     *
     * @param orderIds 订单id列表
     * @return 订单状态
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getOrdersStatus")
    ServerResponseEntity<List<OrderStatusBO>> getOrdersStatus(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 获取订单中的金额信息，不包含退款
     *
     * @param orderIds 订单id列表
     * @return 订单中的金额信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getOrdersSimpleAmountInfo")
    ServerResponseEntity<List<OrderSimpleAmountInfoBO>> getOrdersSimpleAmountInfo(@RequestParam("orderIds") List<Long> orderIds);

//    /**
//     * 获取订单中的金额信息，包含退款、分销结算金额等信息
//     *
//     * @param orderIds 订单id列表
//     * @return 订单中的金额信息
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getOrdersShopId")
//    ServerResponseEntity<List<OrderAmountInfoBO>> getOrdersAmountInfo(@RequestParam("orderIds") List<Long> orderIds);


    /**
     * 获取订单需要保存到es中的数据
     *
     * @param orderId 订单id
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getEsOrder")
    ServerResponseEntity<EsOrderBO> getEsOrder(@RequestParam("orderId") Long orderId);


    /**
     * 提交订单
     *
     * @param mergerOrder 确认订单的订单信息
     * @return 订单号
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/submit")
    ServerResponseEntity<List<Long>> submit(@RequestBody ShopCartOrderMergerVO mergerOrder);

    /**
     * 会员管理部分获取用户相关的订单统计数据
     *
     * @param queryOrderDTO 信息
     * @return 相关用户的订单中的信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/countOrderByUserIds")
    ServerResponseEntity<List<UserOrderStatisticVO>> countOrderByUserIds(@RequestBody QueryOrderDTO queryOrderDTO);

    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/pageOrderByUserIds")
    ServerResponseEntity<List<UserManagerVO>> listOrderByUserIdsAndShopId(@RequestBody PageDTO pageDTO, @RequestParam("userIds") List<Long> userIds, @RequestParam(value = "shopId", defaultValue = "0L") Long shopId, @RequestParam(value = "sort", defaultValue = "0") Integer sort);

    /**
     * 获取各种状态的订单数量
     *
     * @param userId 用户id
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/countOrderByUserId")
    ServerResponseEntity<OrderCountVO> countOrderByUserId(@RequestParam("userId") Long userId);

    /**
     * 付款用户列表
     *
     * @param orderSearchDTO 条件参数
     * @return 用户id列表
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getOrderUserIdsBySearchDTO")
    ServerResponseEntity<List<Long>> getOrderUserIdsBySearchDTO(@RequestBody OrderSearchDTO orderSearchDTO);

    /**
     * 获取在一定时间内消费一定次数的会员信息
     *
     * @param isPayed      是否已支付
     * @param deleteStatus 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除
     * @param startDate    开始时间
     * @param endDate      结束时间
     * @param status       状态
     * @param minNum       最小数量
     * @param maxNum       最大数量
     * @return 会员id
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/listUserIdByPurchaseNum")
    ServerResponseEntity<List<Long>> listUserIdByPurchaseNum(@RequestParam("isPayed") Integer isPayed,
                                                             @RequestParam("deleteStatus") Integer deleteStatus,
                                                             @RequestParam(value = "startDate", required = false) Date startDate,
                                                             @RequestParam(value = "endDate", required = false) Date endDate,
                                                             @RequestParam(value = "status", required = false) Integer status,
                                                             @RequestParam("minNum") Long minNum,
                                                             @RequestParam("maxNum") Long maxNum);

    /**
     * 获取在一定时间内消费一定金额的会员信息
     *
     * @param isPayed      是否已支付
     * @param deleteStatus 用户订单删除状态，0：没有删除， 1：回收站， 2：永久删除
     * @param startDate    开始时间
     * @param endDate      结束时间
     * @param status       状态
     * @param minAmount    最小支付金额
     * @param maxAmount    最大支付金额
     * @return 会员id
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/listUserIdByAverageActualTotal")
    ServerResponseEntity<List<Long>> listUserIdByAverageActualTotal(@RequestParam("isPayed") Integer isPayed,
                                                                    @RequestParam("deleteStatus") Integer deleteStatus,
                                                                    @RequestParam(value = "startDate", required = false) Date startDate,
                                                                    @RequestParam(value = "endDate", required = false) Date endDate,
                                                                    @RequestParam("status") Integer status,
                                                                    @RequestParam("minAmount") Long minAmount,
                                                                    @RequestParam("maxAmount") Long maxAmount);

    /**
     * 根据参数获取数据分析中的订单信息
     *
     * @param spuIds    产品id列表
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 商品效果分析数据
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getProdEffectByDateAndProdIds")
    ServerResponseEntity<List<OrderProdEffectRespVO>> getProdEffectByDateAndProdIds(@RequestParam("spuIds") List<Long> spuIds,
                                                                                    @RequestParam("startTime") Long startTime,
                                                                                    @RequestParam("endTime") Long endTime);


    /**
     * 获取用户的成交留存率
     *
     * @param customerRetainedDTO 条件查询参数
     * @return 成交留存信息列表
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getTradeRetained")
    ServerResponseEntity<List<CustomerRetainVO>> getTradeRetained(@RequestBody CustomerRetainedDTO customerRetainedDTO);

    /**
     * 根据订单id列表， 获取订单流量信息列表
     *
     * @param orderIds 订单id列表
     * @return 订单流量信息列表
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/listOrderByOrderId")
    ServerResponseEntity<List<FlowOrderVO>> listFlowOrderByOrderIds(@RequestParam("orderIds") Collection<Long> orderIds);

    /**
     * 会员支付信息
     *
     * @param param 筛选参数
     * @return 会员支付信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getPaidMemberByParam")
    ServerResponseEntity<UserOrderStatisticBO> getPaidMemberByParam(@RequestBody MemberReqDTO param);

    /**
     * 获取新老会员成交数据
     *
     * @param param 筛选参数
     * @return 新老会员成交数据
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getMemberPayData")
    ServerResponseEntity<UserOrderStatisticListBO> getMemberPayData(@RequestBody MemberReqDTO param);

    /**
     * 刷新交易留存缓存
     *
     * @param customerRetainedDTO 条件查询
     * @return
     */
    @PutMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/removeCacheTradeRetained")
    ServerResponseEntity<Void> removeCacheTradeRetained(@RequestBody CustomerRetainedDTO customerRetainedDTO);

    /**
     * 批量更新订单明细的获得积分
     *
     * @param orderItemVOList 订单明细
     * @return
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/updateOrderItemBatchById")
    ServerResponseEntity<Void> updateOrderItemBatchById(@RequestBody List<OrderItemVO> orderItemVOList);

//    /**
//     * 获取es订单数据列表
//     *
//     * @param orderSearchDTO 开始时间
//     * @return 订单列表
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/pageEsOrder")
//    ServerResponseEntity<List<EsOrderBO>> pageEsOrder(@RequestBody OrderSearchDTO orderSearchDTO);

    /**
     * 获取es订单数据列表
     *
     * @param orderId 订单id
     * @return 订单信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/saveMongoAndGetEsInfo")
    ServerResponseEntity<EsOrderBO> saveMongoAndGetEsInfo(@RequestBody Long orderId);
//    /**
//     * 获取指定时间端内的订单数量
//     *
//     * @param orderSearchDTO
//     * @return 订单列表
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/countOrderNum")
//    ServerResponseEntity<Long> countOrderNum(@RequestBody OrderSearchDTO orderSearchDTO);

    /**
     * 获取订单详情
     *
     * @param orderId 订单id
     * @return 订单详情
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getOrderDetailInfo")
    ServerResponseEntity<SendNotifyBO> getOrderDetailInfo(@RequestParam("orderId") Long orderId);

    /**
     * 获取正常状态的订单数量
     *
     * @param orderIds 订单ids
     * @return 订单详情
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/countNormalOrderByOrderIds")
    ServerResponseEntity<Integer> countNormalOrderByOrderIds(@RequestParam("orderIds") List<Long> orderIds);


    /**
     * 根据用户id列表获取积累消费金额和积累消费笔数
     *
     * @param userIds 用户id列表
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/listSumDataByUserIds")
    ServerResponseEntity<List<SumAmountVO>> listSumDataByUserIds(@RequestBody List<Long> userIds);

    /**
     * 获取用户购买过的商品数量
     *
     * @param spuId  商品id
     * @param userId 分销员userId
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/hasBuySuccessProd")
    ServerResponseEntity<Long> hasBuySuccessProd(@RequestParam("spuId") Long spuId, @RequestParam("userId") Long userId);

    /**
     * 统计用户购物数据
     *
     * @param userId 用户id
     * @return 用户购物数据
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/calculateUserInShopData")
    ServerResponseEntity<UserShoppingDataVO> calculateUserInShopData(@RequestParam("userId") Long userId);
//
//    /**
//     * 获取订单项数据列表
//     *
//     * @param orderItemIds 开始时间
//     * @return 订单列表
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getOrderItems")
//    ServerResponseEntity<List<OrderItemVO>> getOrderItems(@RequestBody List<Long> orderItemIds);
//
//    /**
//     * 根据多个订单号获取订单集合
//     * @param orderIds 订单号集合
//     * @return 订单列表
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getEsOrderList")
//    ServerResponseEntity<List<EsOrderBO>> getEsOrderList(@RequestBody List<Long> orderIds);

    /**
     * 计算订单项当中含有的分销金额
     *
     * @param orderItems 订单项列表
     * @return 分销金额
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/sumTotalDistributionAmountByOrderItem")
    ServerResponseEntity<Long> sumTotalDistributionAmountByOrderItem(@RequestBody List<OrderItemVO> orderItems);
//
//
//    /**
//     * 获取已结算的订单
//     * @param settled 是否已经进行结算
//     * @param orderIds 订单号集合
//     * @return 已结算的订单
//     */
//    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getListBySettledOrOrderIds")
//    ServerResponseEntity<List<EsOrderBO>> getListBySettledOrOrderIds(@RequestParam("settled")Integer settled, @RequestParam("orderIds") List<Long> orderIds);

    /**
     * 获取指定的订单项
     *
     * @param orderIds 订单号集合
     * @return 订单项列表
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/listOrderItemByOrderIds")
    ServerResponseEntity<List<OrderItemVO>> listOrderItemByOrderIds(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 获取商品洞察的商品id
     *
     * @param begin
     * @param size
     * @param shopId
     * @param startTime
     * @param endTime
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getInsightSpuIdsByDate")
    ServerResponseEntity<List<Long>> getInsightSpuIdsByDate(@RequestParam("begin") Integer begin,
                                                            @RequestParam("size") Integer size,
                                                            @RequestParam("shopId") Long shopId,
                                                            @RequestParam("startTime") Long startTime,
                                                            @RequestParam("endTime") Long endTime);

    /**
     * 获取积分订单详情
     *
     * @param orderIds 订单id
     * @return 订单详情
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/insider/getUserScoreLogDetail")
    ServerResponseEntity<List<UserScoreLogOrderBO>> getUserScoreLogDetail(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 订单结算
     *
     * @param orderIds 订单id列表
     * @return
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/settledOrder")
    ServerResponseEntity settledOrder(@RequestBody List<Long> orderIds);

    /**
     * 订单确认收货
     *
     * @param orderIds 订单id列表
     * @return
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/confirmOrder")
    ServerResponseEntity confirmOrder(@RequestBody List<Long> orderIds);

    /**
     * 获取活动订单的支付信息
     *
     * @param orderId 订单id
     * @return
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getActivityOrderInfo")
    ServerResponseEntity<OrderActivityVO> getActivityOrderInfo(@RequestBody Long orderId);

    /**
     * 获取用户活动订单的商品购买数量
     *
     * @param activityId   活动id
     * @param activityType 活动类型
     * @param spuId        商品id
     * @param userId       用户id
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getUserBuyNumByActivityId")
    ServerResponseEntity<Integer> getUserBuyNumByActivityId(@RequestParam("activityId") Long activityId, @RequestParam("activityType") Integer activityType, @RequestParam("spuId") Long spuId, @RequestParam("userId") Long userId);

    /**
     * 获取活动销售的商品数量
     * @param orderIds 订单id列表
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getActivitySalesQuantity")
    ServerResponseEntity<List<OrderActivityVO>> getActivitySalesQuantity(@RequestParam("orderIds")  List<Long> orderIds, @RequestParam("activityType") Integer activityType);

    /**
     * 根据订单id获取对应用户
     * @param orderIds
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getUserByOrderIdList")
    ServerResponseEntity<List<EsOrderVO>> getUserByOrderIdList(@RequestParam("orderIds") List<Long> orderIds);

    /**
     * 统计活动订单的销量
     *
     * @param activityId
     * @param activityType
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/countActivityOrderSale")
    ServerResponseEntity<Integer> countActivityOrderSale(@RequestParam("activityId") Long activityId, @RequestParam("activityType")Integer activityType);


    /**
     * 统计活动sku的销量
     *
     * @param skuId
     * @param activityId
     * @param activityType
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/countActivitySkuSale")
    ServerResponseEntity<Integer> countActivitySkuSale(@RequestParam("skuId") Long skuId, @RequestParam("activityId") Long activityId, @RequestParam("activityType")Integer activityType);

    /**
     * 查询指定的订单及订单项列表（从mysql中查询订单列表）
     * 由于目前进行了分库分表，所以使用该方法时要注意分表的问题，尽量保证查询的订单都是属于同一个用户的，避免多表查询
     * 如果是多个用户的订单查询，且不涉及下单、结算和退款流程时，不要使用该方法，请使用es进行查询
     * @param orderIds
     * @return
     */
    @PostMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/listOrderAndOrderItemByOrderIds")
    ServerResponseEntity<List<OrderVO>> listOrderAndOrderItemByOrderIds(@RequestBody List<Long> orderIds);

    /**
     * 查询财务对账信息，使用mongodb，当有店铺名称查询需要时
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param shopName 店铺名称
     * @param shopId
     * @return 财务对账信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getAccountOrderDetail")
    ServerResponseEntity<AccountOrderDetailVO> getAccountOrderDetail(@RequestParam(value = "startTime", required = false) Date startTime,
                                                                     @RequestParam(value = "endTime", required = false) Date endTime,
                                                                     @RequestParam(value = "shopName", required = false) String shopName,
                                                                     @RequestParam(value = "shopId", required = false) Long shopId);


    /**
     * 查询财务对账信息，使用mongodb，当有店铺名称查询需要时
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param shopName 店铺名称
     * @param pageNum
     * @param pageSize
     * @return 财务对账信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/listShopAccountDetail")
    ServerResponseEntity<PageShopAccountOrderVO> listShopAccountDetail(@RequestParam(value = "startTime", required = false) Date startTime,
                                                                               @RequestParam(value = "endTime", required = false) Date endTime,
                                                                               @RequestParam(value = "shopName", required = false) String shopName,
                                                                               @RequestParam("pageSize") Integer pageSize,
                                                                               @RequestParam("pageNum") Integer pageNum);


    /**
     * 查询财务对账信息，使用mongodb，当有店铺名称查询需要时
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @param shopId 店铺id
     * @param shopName
     * @param pageNum
     * @param pageSize
     * @return 财务对账信息
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/listOrderPayInfo")
    ServerResponseEntity<PageShopAccountOrderVO> listOrderPayInfo(@RequestParam(value = "startTime", required = false) Date startTime,
                                                                       @RequestParam(value = "endTime",required = false) Date endTime,
                                                                       @RequestParam(value = "shopId",required = false) Long shopId,
                                                                       @RequestParam(value = "shopName",required = false) String shopName,
                                                                       @RequestParam(value = "pageSize", required = false) Integer pageSize,
                                                                       @RequestParam(value = "pageNum", required = false) Integer pageNum);
    /**
     * 获取时间范围内的销量排序，放入redis
     * @param key
     * @param shopId 店铺id
     * @param time 时间范围内
     * @param expireTime
     * @param esRenovationSpuSort
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getSoldNumRankByShopIdAndTime")
    ServerResponseEntity<List<Long>> getSoldNumRankByShopIdAndTime(@RequestParam("key") String key, @RequestParam("shopId") Long shopId,
                                                                   @RequestParam("time") Integer time, @RequestParam("expireTime") Integer expireTime,
                                                                   @RequestParam("esRenovationSpuSort") Integer esRenovationSpuSort,
                                                                   @RequestParam(value = "primaryCategoryId", required = false) Long primaryCategoryId);

    /**
     * 获取团购活动信息
     * @param groupActivityId
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/getGroupInfoVOById")
    ServerResponseEntity<GroupInfoVO> getGroupInfoById(@RequestParam("groupActivityId") Long groupActivityId);


    /**
     * 获取报表导出
     * @param formExcelParamVO
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/listFormExcelByParam")
    ServerResponseEntity<List<FormExcelDTO>> listFormExcelByParam(@RequestBody FormExcelParamVO formExcelParamVO);

    /**
     * 付款用户列表
     *
     * @param orderSearchDTO 条件参数
     * @return 用户id列表
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/getStationOrderBySeachDTO")
    ServerResponseEntity<List<EsOrderVO>> getStationOrderBySeachDTO(@RequestBody OrderSearchDTO orderSearchDTO);

    /**
     * 提货
     * @param orderIds
     * @param stationId
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_URL_PREFIX + "/orderStationByOrderId")
    ServerResponseEntity<Boolean> orderStationByOrderId(@RequestParam("orderIds") List<Long> orderIds, @RequestParam("stationId") Long stationId);

    /**
     * 获取自提点订单列表
     * @param orderDTO
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/listStationOrder")
    ServerResponseEntity<List<OrderVO>> listStationOrder(@RequestBody OrderDTO orderDTO);


    /**
     * 核销操作
     * @param orderVirtualInfoDTO
     * @param orderId
     * @param statinoId
     * @return
     */
    @GetMapping(value = FeignInsideAuthConfig.FEIGN_INSIDER_URL_PREFIX + "/orderWriteOffByOrderId")
    ServerResponseEntity<Boolean> orderWriteOffByOrderId(@RequestBody OrderVirtualInfoDTO orderVirtualInfoDTO, @RequestParam("orderId")Long orderId, @RequestParam("statinoId")Long statinoId);
}
